#pragma once
#include"buf_pool.h"
#include<assert.h>
#include<unistd.h>


/*
    用来读(输入)数据的input_buf和专门用来写(输出)数据的output_buf类。
    由于这两个人都应该拥有一些io_buf的特性，所以我们先定义一个基础的父类common_buf。
*/
class common_buf{

public:
    common_buf();
    ~common_buf();
    void pop(int len);
    void clear();
    const int length();

    io_buf* buf;

};


//读操作
class input_buf : public common_buf{
public:
    //从一个链接中读取数据到common_buf中
    int read_data(int fd);

    //从buf中读取数据
    const char* data();

    //调整缓冲区
    void adjust();
};


//写操作
class output_buf : public common_buf{

public:

    //将buf中的数据写入到一个链接中
    int write_data(int fd);

    //将一段数据，写入到buf中
    int send_data(const char* data,int datalen);
};